package com.mybatisPlus.pojo;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

@Data
// 可以不加，使用实体类的名字作为表名！忽略大小写。当数据库表名和实体类名不同时（忽略大小写），可以使用@TableName注解指定表名
// 还可以全局配置，如果是所有表名都设计成是java中实体类名加个前缀或后缀，可以去配置文件中指定
@TableName("t_user")
public class User {


    /*
    默认雪花算法（ASSIGN_ID)：
    1、数据库的主键类型bigint或varchar(64)
    2、实体类Long类型
    自增长(AUTO)：
    数据库中主键类型为数字，而且还要设自增长
     */
    // @Tabled，这里设置id生成方式：自增或雪花算法。还可通过配置文件进行全局配置
    @TableId(type = IdType.AUTO)
    private Integer id;

    // @TableField指定非主键字段的属性在数据库中的字段名。以及对应字段是否存在数据库，不存在则插入、查询和更新时都不会考虑此属性
    @TableField(value = "name", exist = true)
    private String name;

    private Integer age;

    private String email;


    /*
    0表示未被逻辑删除，1表示已被逻辑删除。
    删除的时候自动修改此属性值为1，查询时默认只查询deleted为0的行
     */
    // @TableLogic指定逻辑删除字段属性，也可全局设置每个pojo都自带逻辑删除属性
    @TableLogic
    private Integer deleted;


    // 版本号属性
    @Version
    private Integer version;
}
